/*
 *   Copyright (c) 2010-2022, SIUFUNG
 */
package net.siufung.market.base.region.controller.model.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import net.siufung.core.model.AbstractDto;
import net.siufung.core.utils.CopyUtil;
import net.siufung.market.base.region.mapper.entity.Region;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * <p>
 * 行政区域信息 修改数据传参对象
 * </p>
 * @author 陈建峰
 * @since 2022-07-07 14:18:39
 */
@Slf4j
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="RegionUpdateDto", description="行政区域信息修改数据传输对象")
public class RegionUpdateDto extends AbstractDto {

    private static final long serialVersionUID = -9070344464807002164L;

    /**
     * 主键
     */
    @ApiModelProperty(value = "主键")
    @NotNull(message = "主键不能为空!")
    private Integer id;

    /**
     * 区划代码
     */
    @ApiModelProperty(value = "区划代码")
    @NotBlank(message = "区划代码不能为空!")
    @Length(max=8, message="区划代码长度不大于8!")
    private String code;

    /**
     * 名称
     */
    @ApiModelProperty(value = "名称")
    @NotBlank(message = "名称不能为空!")
    @Length(max=32, message="名称长度不大于32!")
    private String name;

    /**
     * 简称
     */
    @ApiModelProperty(value = "简称")
    @Length(max=32, message="简称长度不大于32!")
    private String shortName;

    /**
     * 上级id
     */
    @ApiModelProperty(value = "上级id")
    @NotNull(message = "上级id不能为空!")
    private Integer parentId;

    /**
     * 等级
     */
    @ApiModelProperty(value = "等级")
    @NotNull(message = "等级不能为空!")
    private Integer level;

    /**
     * 经度
     */
    @ApiModelProperty(value = "经度")
    @Length(max=16, message="经度长度不大于16!")
    private String lng;

    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度")
    @Length(max=16, message="纬度长度不大于16!")
    private String lat;

    /**
     * 次序
     */
    @ApiModelProperty(value = "次序")
    private Integer sequence;


    /**
     * Region 转化成 RegionSaveDto 数据领域实体
     * @return Region
     */
    public Region to(){
        Region region = new Region();
        CopyUtil.copyProperties(this, region);
        return region;
    }
}